package org.shj.pattern.command;

/**
 * 命令模式： 把请求一个操作的对象与知道怎么执行一个操作的对象分割开。
 * 好处：
 *   1. 较容易设计一个命令队列
 *   2. 可以将命令记入日志
 *   3. 允许接收请求的一方决定是否要否决请求
 *   4. 容易地实现对请求的撤销和重做
 *   5. 容易新增加新的具体命令类
 *   
 * 意图： 将请求封装成一个对象，从而可以使用不同的请求对客户进行参数化
 * 主要解决： 在软件系统中，行为请求者与行为实现者通常是一种紧耦合的关系，但某些场合，比如需要对行为进行记录、
 *         撤消或重做等处理时，这种无法抵御变化的紧耦合 的设计就不太合适
 * 
 * 
 * @author huangjian
 *
 */
public class Main {

	public static void main(String[] args){
		Receiver r = new Receiver();
		Command c = new ConcreteCommand(r);
		Invoker i = new Invoker();
		
		i.setCommand(c);
		
		i.executeCommand();
	}
}
